"""
model.py 包含两个类：FormattedMessage和FormattedMessageCategory。
"""
from db import BaseEntity

class IDExistException(Exception):
    pass

class FormattedMessage(BaseEntity):
    def __init__(self):

        # 初始化表头包, 含'id', 'name', 'text', 'elementlist', 'category'的列表
        self.header = ['id', 'name', 'text', 'elementlist', 'category']
        # 调用父类的构造函数
        super().__init__('formatted_message', self.header)

    def add_one(self, **kwargs):
        """
        添加一个格式化消息对象到实体中，接受关键字参数kwargs，如果没有提供'id'参数，则自动生成一个唯一的id
        如果提供了重复的id，则抛出IDExistException异常
        """
        # 判断kwargs中是否包含id
        if 'id' not in kwargs.keys():
            # 如果表中已经有数据，则id为表中id最大值加1
            if self.count() > 0:
                kwargs['id'] = str(
                    max([int(d['id']) for d in self.get_all()]) + 1)
            else:
                # 如果表中没有数据，则id为0
                kwargs['id'] = '0'
        # 判断表中是否有重复的id
        elif self.get({'id': kwargs['id']}):
            # 如果有，则抛出异常
            raise IDExistException('ID已经存在，不可重复')
        # 调用父类的add_one函数
        super().add_one(**kwargs)

class FormattedMessageCategory(BaseEntity):
    def __init__(self):
        self.header = ['name', ]
        super().__init__('formatted_message_category', self.header)
